Storage arrays are used in various computer-networking applications to store data accessed by servers and other devices. Over time, these storage arrays can become full or technologically obsolete. When the storage array reaches its maximum capacity, or for a variety of other reasons, the data stored in the initial data-storage array is desired to be migrated onto a target storage array.
Typical storage arrays include network-storage devices, RAID-type storage devices, or other types of storage media as is known in the art. Historically, replicating data from a first source to a target source has been problematic and expensive. One prior-art solution includes attempting to copy all of the files at the file level from the source device to the target device. However, this process typically requires an initial and enduring shut down of any applications that may affect any data-stored on the data-storage devices. Such a solution is impractical because the applications that need to be shut down are often relied upon for productivity.
Another prior-art solution includes placing a host agent, or some other copying application, on each server that has data to be copied. FIG. 1A illustrates such a topology. A source storage array is coupled to a destination array by a network switch 114, which is coupled to multiple servers 116, 188, and 120. This copying application 121 can attempt to mirror the various data components to copy only after it is recognized by the respective server, which requires rebooting the server. Each time one of the servers has to be rebooted, the applications running on that server are unavailable. By relegating the copying process to an application 121 that runs on the same server as needed applications, the server's performance is impeded. Moreover, each server (PC, node, etc.) must be equipped with the copying application 121. This can translate to installing the copying application 121 on tens or hundreds of machines, rebooting them, and running them with diminished performance. When the copying application 121 is removed, each server must be rebooted again. This method requires much human interaction; is time intensive; requires multiple reboots.
In still another potential prior-art solution, an appliance is inserted between the source and destination storage arrays. Data is written through this device. But this scheme is also time and resource intensive in that all of the applications that can affect the data being copied must be brought down to insert the appliance. Moreover, after the data is copied from the source destination to the target destination, manual intervention must take place to remove the physical appliance from between the two storage arrays. The servers that store data in the storage array must then be reconfigured to point to the target storage array rather than the original source storage array.
As the amount of data storage increases, surpassing the order of terabytes, the number of applications that make use of the data increases. Thus, terminating all applications that can affect any data stored on the source data-storage device becomes problematic. Accordingly, there is a need for a new and useful method of copying data from a first storage device to a second storage device that reduces the time necessary to shut down applications that may modify the data during the entirety of the copying process. Although the data-modification applications may need to be temporarily shut down, there is a need to minimize the time associated with shutting down all of the different applications that could potentially affect the data to be migrated.